package cn.qingyun.gis.modules.express.entity.dto;


import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * <p>
 * 快递勘误导出对象
 * </p>
 *
 * @author miyunguo
 * @since 2023-09-25
 */
@Data
public class ExportExpressProofreadDto {

    @ExcelProperty(value = "id")
    private String id;

    @ExcelProperty(value = "归属省份")
    private String province;

    @ExcelProperty(value = "行政城市")
    private String city;

    @ExcelProperty(value = "行政区县")
    private String districts;

    @ExcelProperty(value = "归属街道")
    private String street;

    @ExcelProperty(value = "归属道路")
    private String road;

    @ExcelProperty(value = "归属门牌号")
    private String streetNumber;

    @ExcelProperty(value = "业务网格")
    private String gridName;

    @ExcelProperty(value = "网格编码")
    private String gridId;

    /*20231007添加字段*/
    @ExcelProperty(value = "业务微网格")
    private String microGridName;

    @ExcelProperty(value = "微网格编码")
    private String microGridId;

    @ApiModelProperty(value = "是否归属本网格(0:不归属,1:归属)")
    @ExcelProperty("是否归属本网格")
    private String gridBelongStatus;

    @ApiModelProperty(value = "应属区县")
    @ExcelProperty("应属区县")
    private String belongCounty;

    @ApiModelProperty(value = "应属网格")
    @ExcelProperty("应属网格")
    private String belongGrid;

    @ApiModelProperty(value = "细分市场类型")
    @ExcelProperty(value = "细分市场类型")
    private String type;

    @ExcelProperty(value = "快递名称")
    private String expressName;

    @ExcelProperty(value = "站点名称")
    private String stationName;

    @ExcelProperty(value = "公司地址")
    private String companyAddress;

    @ExcelProperty(value = "快递点是否存在")
    @ApiModelProperty(value = "站点是否存在(0:未存在,1:已存在)")
    private String stationExistStatue;

    @ExcelProperty(value = "备注说明")
    @ApiModelProperty(value = "备注说明")
    private String stationDescr;

    @ExcelProperty(value = "经度")
    private BigDecimal lon;

    @ExcelProperty(value = "纬度")
    private BigDecimal lat;

    @ExcelProperty("校对状态")
    private String kwStatus;

    @ExcelProperty(value = "校对经度")
    private BigDecimal kwLon;

    @ExcelProperty(value = "校对纬度")
    private BigDecimal kwLat;

    /*2023080926新增*/
    /**
     * 匹配POI-ID
     */
    @ApiModelProperty(value = "匹配poi-id")
    @ExcelProperty(value = "匹配POI-ID")
    private String matchPoiId;

    /**
     * 匹配POI名称
     */
    @ApiModelProperty(value = "匹配poi名称")
    @ExcelProperty(value = "匹配POI名称")
    private String matchPoiName;

    @ExcelProperty("校对后名称")
    private String kwStationName;

    @ExcelProperty("校对后地址")
    private String kwAddress;

    @ExcelProperty("校对后地址描述")
    private String kwAddressDescribe;

    @ExcelProperty(value = "现有快递点人数")
    @ApiModelProperty(value = "站点人数")
    private Integer stationNum;

    @ExcelProperty(value = "我网客户占比")
    @ApiModelProperty(value = "我网客户占比")
    private String clientProportion;

    @ExcelProperty(value = "快递点联系人")
    @ApiModelProperty(value = "快递点联系人")
    private String stationLinkman;

    @ExcelProperty(value = "联系电话")
    @ApiModelProperty(value = "联系电话")
    private String stationPhone;

    @ExcelProperty(value = "宽带资源是否覆盖")
    @ApiModelProperty(value = "宽带网络资源是否覆盖(0:未覆盖,1:已覆盖)")
    private String resourceCoverStatue;

    @ExcelProperty(value = "站长是否协助宣传")
    @ApiModelProperty(value = "站长是否协助宣传(0:否,1:是)")
    private String emotionInPlaceStatue;

    @ExcelProperty(value = "是否报销话费")
    @ApiModelProperty(value = "是否报销话费(0:未报销,1:已报销)")
    private String billStatus;

    @ExcelProperty(value = "是否已统一办理号卡")
    @ApiModelProperty(value = "是否已经办理移动卡号(0:未办理,1:已办理)")
    private String applyCardStatus;

    @ExcelProperty(value = "未拓展原因(用|隔开)")
    @ApiModelProperty(value = "未拓展原因(用|隔开)")
    private String unextendedReason;

    @ExcelProperty(value = "今年已办卡数")
    @ApiModelProperty(value = "已办卡数量")
    private String cardsNum;

    @ExcelProperty(value = "当月办卡数")
    @ApiModelProperty(value = "月办卡(张)")
    private Integer monthlyCard;

    @ExcelProperty(value = "是否办理骑士卡")
    @ApiModelProperty(value = "办理骑士卡（0：否，1：是）")
    private String tsitska;

    @ExcelProperty(value = "套餐(元)")
    @ApiModelProperty(value = "套餐(元)")
    private String comboMoney;

    @ExcelProperty(value = "通话(分钟)")
    @ApiModelProperty(value = "通话(分钟)")
    private Integer communicate;

    @ExcelProperty(value = "通用流量(G)")
    @ApiModelProperty(value = "通用流量(G)")
    private String generalFlux;

    @ExcelProperty(value = "具体办理号码(用|隔开)")
    private String specificNumber;

    @ExcelProperty(value = "最新更新时间")
    private String updateTime;

    // 20231011添加导入字段
    @ExcelProperty(value = "业务地市")
    private String regionCity;

    @ExcelProperty(value = "业务地市编码")
    private String regionCityCode;

    @ApiModelProperty(value = "业务区县")
    @ExcelProperty(value = "业务区县")
    private String regionDistricts;

    @ApiModelProperty(value = "业务区县编码")
    @ExcelProperty(value = "业务区县编码")
    private String regionDistrictsCode;

    public String getRegionDistricts() {
        return regionDistricts;
    }

    public void setRegionDistricts(String regionDistricts) {
        this.regionDistricts = regionDistricts;
    }

    public String getRegionDistrictsCode() {
        return regionDistrictsCode;
    }

    public void setRegionDistrictsCode(String regionDistrictsCode) {
        this.regionDistrictsCode = regionDistrictsCode;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getProvince() {
        return province;
    }

    public void setProvince(String province) {
        this.province = province;
    }

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    public String getDistricts() {
        return districts;
    }

    public void setDistricts(String districts) {
        this.districts = districts;
    }

    public String getStreet() {
        return street;
    }

    public void setStreet(String street) {
        this.street = street;
    }

    public String getRoad() {
        return road;
    }

    public void setRoad(String road) {
        this.road = road;
    }

    public String getStreetNumber() {
        return streetNumber;
    }

    public void setStreetNumber(String streetNumber) {
        this.streetNumber = streetNumber;
    }

    public String getGridName() {
        return gridName;
    }

    public void setGridName(String gridName) {
        this.gridName = gridName;
    }

    public String getGridId() {
        return gridId;
    }

    public void setGridId(String gridId) {
        this.gridId = gridId;
    }

    public String getMicroGridName() {
        return microGridName;
    }

    public void setMicroGridName(String microGridName) {
        this.microGridName = microGridName;
    }

    public String getMicroGridId() {
        return microGridId;
    }

    public void setMicroGridId(String microGridId) {
        this.microGridId = microGridId;
    }

    public String getGridBelongStatus() {
        if (gridBelongStatus != null) {
            return "0".equals(gridBelongStatus) ? "否" : "是";
        }
        return gridBelongStatus;
    }

    public void setGridBelongStatus(String gridBelongStatus) {
        this.gridBelongStatus = gridBelongStatus;
    }

    public String getBelongCounty() {
        return belongCounty;
    }

    public void setBelongCounty(String belongCounty) {
        this.belongCounty = belongCounty;
    }

    public String getBelongGrid() {
        return belongGrid;
    }

    public void setBelongGrid(String belongGrid) {
        this.belongGrid = belongGrid;
    }

    public String getExpressName() {
        return expressName;
    }

    public void setExpressName(String expressName) {
        this.expressName = expressName;
    }

    public String getStationName() {
        return stationName;
    }

    public void setStationName(String stationName) {
        this.stationName = stationName;
    }

    public String getCompanyAddress() {
        return companyAddress;
    }

    public void setCompanyAddress(String companyAddress) {
        this.companyAddress = companyAddress;
    }

    public String getStationExistStatue() {
        if (stationExistStatue != null) {
            return "0".equals(stationExistStatue) ? "否" : "是";
        }
        return stationExistStatue;
    }

    public void setStationExistStatue(String stationExistStatue) {
        this.stationExistStatue = stationExistStatue;
    }

    public String getStationDescr() {
        return stationDescr;
    }

    public void setStationDescr(String stationDescr) {
        this.stationDescr = stationDescr;
    }

    public BigDecimal getLon() {
        return lon;
    }

    public void setLon(BigDecimal lon) {
        this.lon = lon;
    }

    public BigDecimal getLat() {
        return lat;
    }

    public void setLat(BigDecimal lat) {
        this.lat = lat;
    }

    public String getKwStatus() {
        if (kwStatus != null) {
            return "0".equals(kwStatus) ? "否" : "是";
        }
        return kwStatus;
    }

    public void setKwStatus(String kwStatus) {
        this.kwStatus = kwStatus;
    }

    public BigDecimal getKwLon() {
        return kwLon;
    }

    public void setKwLon(BigDecimal kwLon) {
        this.kwLon = kwLon;
    }

    public BigDecimal getKwLat() {
        return kwLat;
    }

    public void setKwLat(BigDecimal kwLat) {
        this.kwLat = kwLat;
    }

    public String getMatchPoiId() {
        return matchPoiId;
    }

    public void setMatchPoiId(String matchPoiId) {
        this.matchPoiId = matchPoiId;
    }

    public String getMatchPoiName() {
        return matchPoiName;
    }

    public void setMatchPoiName(String matchPoiName) {
        this.matchPoiName = matchPoiName;
    }

    public String getKwStationName() {
        return kwStationName;
    }

    public void setKwStationName(String kwStationName) {
        this.kwStationName = kwStationName;
    }

    public String getKwAddress() {
        return kwAddress;
    }

    public void setKwAddress(String kwAddress) {
        this.kwAddress = kwAddress;
    }

    public String getKwAddressDescribe() {
        return kwAddressDescribe;
    }

    public void setKwAddressDescribe(String kwAddressDescribe) {
        this.kwAddressDescribe = kwAddressDescribe;
    }

    public Integer getStationNum() {
        return stationNum;
    }

    public void setStationNum(Integer stationNum) {
        this.stationNum = stationNum;
    }

    public String getClientProportion() {
        return clientProportion;
    }

    public void setClientProportion(String clientProportion) {
        this.clientProportion = clientProportion;
    }

    public String getStationLinkman() {
        return stationLinkman;
    }

    public void setStationLinkman(String stationLinkman) {
        this.stationLinkman = stationLinkman;
    }

    public String getStationPhone() {
        return stationPhone;
    }

    public void setStationPhone(String stationPhone) {
        this.stationPhone = stationPhone;
    }

    public String getResourceCoverStatue() {
        if (resourceCoverStatue != null) {
            return "0".equals(resourceCoverStatue) ? "否" : "是";
        }
        return resourceCoverStatue;
    }

    public void setResourceCoverStatue(String resourceCoverStatue) {
        this.resourceCoverStatue = resourceCoverStatue;
    }

    public String getEmotionInPlaceStatue() {
        if (emotionInPlaceStatue != null) {
            return "0".equals(emotionInPlaceStatue) ? "否" : "是";
        }
        return emotionInPlaceStatue;
    }

    public void setEmotionInPlaceStatue(String emotionInPlaceStatue) {
        this.emotionInPlaceStatue = emotionInPlaceStatue;
    }

    public String getBillStatus() {
        if (billStatus != null) {
            return "0".equals(billStatus) ? "否" : "是";
        }
        return billStatus;

    }

    public void setBillStatus(String billStatus) {
        this.billStatus = billStatus;
    }

    public String getApplyCardStatus() {
        if (applyCardStatus != null) {
            return "0".equals(applyCardStatus) ? "否" : "是";
        }
        return applyCardStatus;
    }

    public void setApplyCardStatus(String applyCardStatus) {
        this.applyCardStatus = applyCardStatus;
    }

    public String getUnextendedReason() {
        if (unextendedReason != null) {
            List<String> reasonList = Arrays.asList(unextendedReason.split("\\|"));
            List<String> newReasonList = new ArrayList<>();
            if (!reasonList.isEmpty()) {
                for (int index = 0; index < reasonList.size(); index++) {
                    if ("0x—0Aa".equals(reasonList.get(index))) {
                        newReasonList.add("前期未走访");
                    }
                    if ("0y-1Aa".equals(reasonList.get(index))) {
                        newReasonList.add("站长无合作意向");
                    }
                    if ("0-Aa".equals(reasonList.get(index))) {
                        newReasonList.add("网点已全部为移动用户");
                    }
                    if ("1-Bb".equals(reasonList.get(index))) {
                        newReasonList.add("友商已统谈不好拓展");
                    }
                    if ("2-Cc".equals(reasonList.get(index))) {
                        newReasonList.add("对我方资费不认可");
                    }
                    if ("3-Dd".equals(reasonList.get(index))) {
                        newReasonList.add("对我方网格不认可");
                    }
                    if ("4-Ee".equals(reasonList.get(index))) {
                        newReasonList.add("其他(" + reasonList.get(index + 1) + ")");
                    }
                }
                return String.join("|", newReasonList);
            }
        }

        return "";
    }

    public void setUnextendedReason(String unextendedReason) {
        this.unextendedReason = unextendedReason;
    }

    public String getCardsNum() {
        return cardsNum;
    }

    public void setCardsNum(String cardsNum) {
        this.cardsNum = cardsNum;
    }

    public Integer getMonthlyCard() {
        return monthlyCard;
    }

    public void setMonthlyCard(Integer monthlyCard) {
        this.monthlyCard = monthlyCard;
    }

    public String getTsitska() {
        if (tsitska != null) {
            return "0".equals(tsitska) ? "否" : "是";
        }
        return tsitska;
    }

    public void setTsitska(String tsitska) {
        this.tsitska = tsitska;
    }

    public String getComboMoney() {
        return comboMoney;
    }

    public void setComboMoney(String comboMoney) {
        this.comboMoney = comboMoney;
    }

    public Integer getCommunicate() {
        return communicate;
    }

    public void setCommunicate(Integer communicate) {
        this.communicate = communicate;
    }

    public String getGeneralFlux() {
        return generalFlux;
    }

    public void setGeneralFlux(String generalFlux) {
        this.generalFlux = generalFlux;
    }

    public String getSpecificNumber() {
        return specificNumber;
    }

    public void setSpecificNumber(String specificNumber) {
        this.specificNumber = specificNumber;
    }

    public String getUpdateTime() {
        return updateTime;
    }

    public void setUpdateTime(String updateTime) {
        this.updateTime = updateTime;
    }

    public String getRegionCity() {
        return regionCity;
    }

    public void setRegionCity(String regionCity) {
        this.regionCity = regionCity;
    }

    public String getRegionCityCode() {
        return regionCityCode;
    }

    public void setRegionCityCode(String regionCityCode) {
        this.regionCityCode = regionCityCode;
    }
}